<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.9.2" />
<title>graia.application.event.mirai API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;margin:25px 0 10px 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;font-size:.8em;line-height:1.4em}code{background:#f2f2f1;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-weight:bold;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
</head>
<body>
<main>
<article id="content">
<header>
<h1 class="title">Module <code>graia.application.event.mirai</code></h1>
</header>
<section id="section-intro">
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">from typing import Any, Dict, Literal, NoReturn, Optional

from pydantic import Field
from pydantic.class_validators import validator
from graia.application.context import application
from graia.application.group import Group, Member, MemberPerm
from graia.application.exceptions import InvaildArgument, InvaildSession
from graia.application.utilles import raise_for_return_code
from . import ApplicationDispatcher, MiraiEvent, EmptyDispatcher
from graia.broadcast.entities.dispatcher import BaseDispatcher
from graia.broadcast.interfaces.dispatcher import DispatcherInterface
from datetime import datetime


class BotOnlineEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号登录成功

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOnlineEvent&#34;
    qq: int

    Dispatcher = EmptyDispatcher


class BotOfflineEventActive(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号主动离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOfflineEventActive&#34;
    qq: int

    Dispatcher = EmptyDispatcher


class BotOfflineEventForce(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号被迫离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOfflineEventForce&#34;
    qq: int

    Dispatcher = EmptyDispatcher


class BotOfflineEventDropped(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号与服务器的连接被服务器主动断开, 或因网络原因离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOfflineEventDropped&#34;
    qq: int

    Dispatcher = EmptyDispatcher


class BotReloginEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号正尝试重新登录

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotReloginEvent&#34;
    qq: int

    Dispatcher = EmptyDispatcher


class BotGroupPermissionChangeEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号在一特定群组内所具有的权限发生变化

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotGroupPermissionChangeEvent&#34;
    origin: MemberPerm
    current: MemberPerm
    group: Group

    Dispatcher = EmptyDispatcher


class BotMuteEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;BotMuteEvent&#34;
    durationSeconds: int
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group


class BotUnmuteEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主解除禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行解除禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;BotUnmuteEvent&#34;
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group


class BotJoinGroupEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号加入指定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;BotJoinGroupEvent&#34;
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class BotLeaveEventActive(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号主动退出了某群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type: str = &#34;BotLeaveEventActive&#34;
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class BotLeaveEventKick(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号被某群组的管理员/群主从该群组中删除.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type: str = &#34;BotLeaveEventKick&#34;
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class GroupRecallEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有群成员在指定群组撤回了一条消息, 注意, 这里的群成员若具有管理员/群主权限, 则他们可以撤回其他普通群员的消息, 且不受发出时间限制.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, return:optional): 执行本操作的群成员, 若为 None 则为应用实例所辖账号操作
        Group (annotation): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;GroupRecallEvent&#34;
    authorId: int
    messageId: int
    time: datetime
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class FriendRecallEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有一位与应用实例所辖账号为好友关系的用户撤回了一条消息

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;FriendRecallEvent&#34;
    authorId: int
    messageId: int
    time: int
    operator: int

    Dispatcher = EmptyDispatcher


class GroupNameChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组被修改了群名称

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了群名称的群组
        Member (annotation): 更改群名称的成员, 权限必定为管理员或是群主
    &#34;&#34;&#34;

    type = &#34;GroupNameChangeEvent&#34;
    origin: str
    current: str
    group: Group
    operator: Optional[Member] = None

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupEntranceAnnouncementChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组被修改了入群公告

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了入群公告的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupEntranceAnnouncementChangeEvent&#34;
    origin: str
    current: str
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupMuteAllEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组开启了全体禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 开启了全体禁言的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupMuteAllEvent&#34;
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupAllowAnonymousChatEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组修改了有关匿名聊天的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupAllowAnonymousChatEvent&#34;
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupAllowConfessTalkEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组修改了有关坦白说的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
    &#34;&#34;&#34;

    type = &#34;GroupAllowAnonymousChatEvent&#34;
    origin: bool
    current: bool
    group: Group
    isByBot: bool

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class GroupAllowMemberInviteEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组修改了有关是否允许已有成员邀请其他用户加入群组的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupAllowMemberInviteEvent&#34;
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class MemberJoinEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一新成员加入了一特定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 该用户加入的群组
        Member (annotation): 关于该用户的成员实例
    &#34;&#34;&#34;

    type = &#34;MemberJoinEvent&#34;
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberLeaveEventKick(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员被管理员/群主从群组中删除, 当 `operator` 为 `None` 时, 执行者为应用实例所辖账号.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 指定的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被从群组删除的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 执行了该操作的管理员/群主, 也可能是应用实例所辖账号.
    &#34;&#34;&#34;

    type = &#34;MemberLeaveEventKick&#34;
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberLeaveEventQuit(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员主动退出群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生本事件的群组, 通常的, 在本事件发生后本群组成员数量少于之前
        Member (annotation): 主动退出群组的成员
    &#34;&#34;&#34;

    type = &#34;MemberLeaveEventQuit&#34;
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberCardChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员的群名片被更改, 执行者可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被更改群名片的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 该操作的执行者, 可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).
    &#34;&#34;&#34;

    type = &#34;MemberCardChangeEvent&#34;
    origin: str
    current: str
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator


class MemberSpecialTitleChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员的群头衔被更改, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被更改群头衔的群组成员
    &#34;&#34;&#34;

    type = &#34;MemberSpecialTitleChangeEvent&#34;
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberPermissionChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员的权限被更改/调整, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被调整权限的群组成员
    &#34;&#34;&#34;

    type = &#34;MemberPermissionChangeEvent&#34;
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberMuteEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员被管理员/群组禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被禁言的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 该操作的执行者, 也可能是应用实例所辖账号.
    &#34;&#34;&#34;

    type = &#34;MemberMuteEvent&#34;
    durationSeconds: int
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberUnmuteEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员被管理员/群组解除禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被禁言的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 该操作的执行者, 可能是管理员或是群主, 也可能是应用实例所辖账号.
    &#34;&#34;&#34;

    type = &#34;MemberUnmuteEvent&#34;
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group


class NewFriendRequestEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有一用户向机器人提起好友请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 发起加好友请求的用户的 ID
        event.sourceGroup: Optional[int] # 对方可能是从某个群发起对账号的请求的, mirai 可以解析对方从哪个群发起的请求.
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
    &#34;&#34;&#34;

    type = &#34;NewFriendRequestEvent&#34;
    requestId: int = Field(..., alias=&#34;eventId&#34;)
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    sourceGroup: Optional[int] = Field(..., alias=&#34;groupId&#34;)
    nickname: str = Field(..., alias=&#34;nick&#34;)
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;同意对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.sourceGroup,
                &#34;operate&#34;: 0,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.sourceGroup,
                &#34;operate&#34;: 1,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.sourceGroup,
                &#34;operate&#34;: 2,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)


class MemberJoinRequestEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有一用户向机器人作为管理员/群主的群组申请加入群组.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 申请加入群组的用户的 ID
        event.groupId: Optional[int] # 对方试图加入的群组的 ID
        event.groupName: str # 对方试图加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 忽略请求: `await event.ignore()`, 具体查看该方法所附带的说明.
        5. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
        6. 忽略并不再接受来自对方的请求: `await event.ignoreAndBlock()`, 具体查看该方法所附带的说明.
    &#34;&#34;&#34;

    type = &#34;MemberJoinRequestEvent&#34;
    requestId: int = Field(..., alias=&#34;eventId&#34;)
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias=&#34;groupId&#34;)
    groupName: str = Field(..., alias=&#34;groupName&#34;)
    nickname: str = Field(..., alias=&#34;nick&#34;)
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;同意对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 0,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 1,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignore(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;忽略对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 2,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 3,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignoreAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 4,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)


class BotInvitedJoinGroupRequestEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号接受到来自某个账号的邀请加入某个群组的请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 邀请所辖账号加入群组的用户的 ID
        event.groupId: Optional[int] # 对方邀请所辖账号加入的群组的 ID
        event.groupName: str # 对方邀请所辖账号加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
    &#34;&#34;&#34;

    type = &#34;BotInvitedJoinGroupRequestEvent&#34;
    requestId: int = Field(..., alias=&#34;eventId&#34;)
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias=&#34;groupId&#34;)
    groupName: str = Field(..., alias=&#34;groupName&#34;)
    nickname: str = Field(..., alias=&#34;nick&#34;)
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;接受邀请并加入群组/发起对指定群组的加入申请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/botInvitedJoinGroupRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 0,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方加入指定群组的邀请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/botInvitedJoinGroupRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 1,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)


class NudgeEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号被某个账号在相应上下文区域进行 &#34;戳一戳&#34;(Nudge) 的行为.

    Graia Project 及 NatriumLab 都不是医学机构, 不负责关于性骚扰等方面的咨询, 请前往权威医学有关设施进行相应操作.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type: str = &#34;NudgeEvent&#34;
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    target: int

    msg_action: str = Field(..., alias=&#34;action&#34;)
    msg_suffix: str = Field(..., alias=&#34;suffix&#34;)
    origin_subject_info: Dict[str, Any] = Field(..., alias=&#34;subject&#34;)

    friend_id: Optional[int] = None
    group_id: Optional[int] = None

    context_type: Literal[&#34;friend&#34;, &#34;group&#34;] = None

    @validator(&#34;friend_id&#34;, pre=True, always=True)
    def subject_handle_friend_id(cls, v, values, **kwargs):
        if values[&#34;origin_subject_info&#34;][&#34;kind&#34;] == &#34;Friend&#34;:
            return values[&#34;origin_subject_info&#34;][&#34;id&#34;]

    @validator(&#34;group_id&#34;, pre=True, always=True)
    def subject_handle_group_id(cls, v, values):
        if values[&#34;origin_subject_info&#34;][&#34;kind&#34;] == &#34;Group&#34;:
            return values[&#34;origin_subject_info&#34;][&#34;id&#34;]

    @validator(&#34;context_type&#34;, pre=True, always=True)
    def subject_handle_context_type(cls, v, values):
        return str.lower(values[&#34;origin_subject_info&#34;][&#34;kind&#34;])

    Dispatcher = EmptyDispatcher</code></pre>
</details>
</section>
<section>
</section>
<section>
</section>
<section>
</section>
<section>
<h2 class="section-title" id="header-classes">Classes</h2>
<dl>
<dt id="graia.application.event.mirai.BotGroupPermissionChangeEvent"><code class="flex name class">
<span>class <span class="ident">BotGroupPermissionChangeEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号在一特定群组内所具有的权限发生变化</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotGroupPermissionChangeEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号在一特定群组内所具有的权限发生变化

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotGroupPermissionChangeEvent&#34;
    origin: MemberPerm
    current: MemberPerm
    group: Group

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotGroupPermissionChangeEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotGroupPermissionChangeEvent.current"><code class="name">var <span class="ident">current</span> : <a title="graia.application.group.MemberPerm" href="../group.html#graia.application.group.MemberPerm">MemberPerm</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotGroupPermissionChangeEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotGroupPermissionChangeEvent.origin"><code class="name">var <span class="ident">origin</span> : <a title="graia.application.group.MemberPerm" href="../group.html#graia.application.group.MemberPerm">MemberPerm</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotGroupPermissionChangeEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent"><code class="flex name class">
<span>class <span class="ident">BotInvitedJoinGroupRequestEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号接受到来自某个账号的邀请加入某个群组的请求.</p>
<p><strong> 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Addon Introduction:
该事件的处理需要你获取原始事件实例.
1. 读取该事件的基础信息:
<code>python
event.supplicant: int # 邀请所辖账号加入群组的用户的 ID
event.groupId: Optional[int] # 对方邀请所辖账号加入的群组的 ID
event.groupName: str # 对方邀请所辖账号加入的群组的名称
event.nickname: str # 对方的昵称
event.message: str # 对方发起请求时填写的描述</code></p>
<pre><code>2. 同意请求: &lt;code&gt;await event.accept()&lt;/code&gt;, 具体查看该方法所附带的说明.
3. 拒绝请求: &lt;code&gt;await event.reject()&lt;/code&gt;, 具体查看该方法所附带的说明.
</code></pre>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotInvitedJoinGroupRequestEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号接受到来自某个账号的邀请加入某个群组的请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 邀请所辖账号加入群组的用户的 ID
        event.groupId: Optional[int] # 对方邀请所辖账号加入的群组的 ID
        event.groupName: str # 对方邀请所辖账号加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
    &#34;&#34;&#34;

    type = &#34;BotInvitedJoinGroupRequestEvent&#34;
    requestId: int = Field(..., alias=&#34;eventId&#34;)
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias=&#34;groupId&#34;)
    groupName: str = Field(..., alias=&#34;groupName&#34;)
    nickname: str = Field(..., alias=&#34;nick&#34;)
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;接受邀请并加入群组/发起对指定群组的加入申请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/botInvitedJoinGroupRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 0,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方加入指定群组的邀请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/botInvitedJoinGroupRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 1,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.groupId"><code class="name">var <span class="ident">groupId</span> : Union[int, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.groupName"><code class="name">var <span class="ident">groupName</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.message"><code class="name">var <span class="ident">message</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.nickname"><code class="name">var <span class="ident">nickname</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.requestId"><code class="name">var <span class="ident">requestId</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.supplicant"><code class="name">var <span class="ident">supplicant</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
<h3>Methods</h3>
<dl>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.accept"><code class="name flex">
<span>async def <span class="ident">accept</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>接受邀请并加入群组/发起对指定群组的加入申请.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;接受邀请并加入群组/发起对指定群组的加入申请.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/botInvitedJoinGroupRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.groupId,
            &#34;operate&#34;: 0,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.reject"><code class="name flex">
<span>async def <span class="ident">reject</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>拒绝对方加入指定群组的邀请.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;拒绝对方加入指定群组的邀请.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/botInvitedJoinGroupRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.groupId,
            &#34;operate&#34;: 1,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotJoinGroupEvent"><code class="flex name class">
<span>class <span class="ident">BotJoinGroupEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号加入指定群组</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation, optional = None): 发生该事件的群组</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotJoinGroupEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号加入指定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;BotJoinGroupEvent&#34;
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotJoinGroupEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotJoinGroupEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotJoinGroupEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotLeaveEventActive"><code class="flex name class">
<span>class <span class="ident">BotLeaveEventActive</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号主动退出了某群组.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation, optional = None): 发生该事件的群组</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotLeaveEventActive(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号主动退出了某群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type: str = &#34;BotLeaveEventActive&#34;
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotLeaveEventActive.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotLeaveEventActive.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotLeaveEventActive.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotLeaveEventKick"><code class="flex name class">
<span>class <span class="ident">BotLeaveEventKick</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号被某群组的管理员/群主从该群组中删除.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation, optional = None): 发生该事件的群组</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotLeaveEventKick(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号被某群组的管理员/群主从该群组中删除.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type: str = &#34;BotLeaveEventKick&#34;
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotLeaveEventKick.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotLeaveEventKick.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotLeaveEventKick.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotMuteEvent"><code class="flex name class">
<span>class <span class="ident">BotMuteEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主禁言</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Member (annotation, optional = None): 执行禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
Group (annotation, optional = None): 发生该事件的群组</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotMuteEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;BotMuteEvent&#34;
    durationSeconds: int
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotMuteEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotMuteEvent.durationSeconds"><code class="name">var <span class="ident">durationSeconds</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotMuteEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotMuteEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventActive"><code class="flex name class">
<span>class <span class="ident">BotOfflineEventActive</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号主动离线</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotOfflineEventActive(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号主动离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOfflineEventActive&#34;
    qq: int

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotOfflineEventActive.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventActive.qq"><code class="name">var <span class="ident">qq</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventActive.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventDropped"><code class="flex name class">
<span>class <span class="ident">BotOfflineEventDropped</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号与服务器的连接被服务器主动断开, 或因网络原因离线</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotOfflineEventDropped(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号与服务器的连接被服务器主动断开, 或因网络原因离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOfflineEventDropped&#34;
    qq: int

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotOfflineEventDropped.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventDropped.qq"><code class="name">var <span class="ident">qq</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventDropped.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventForce"><code class="flex name class">
<span>class <span class="ident">BotOfflineEventForce</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号被迫离线</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotOfflineEventForce(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号被迫离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOfflineEventForce&#34;
    qq: int

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotOfflineEventForce.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventForce.qq"><code class="name">var <span class="ident">qq</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotOfflineEventForce.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotOnlineEvent"><code class="flex name class">
<span>class <span class="ident">BotOnlineEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号登录成功</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotOnlineEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号登录成功

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotOnlineEvent&#34;
    qq: int

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotOnlineEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotOnlineEvent.qq"><code class="name">var <span class="ident">qq</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotOnlineEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotReloginEvent"><code class="flex name class">
<span>class <span class="ident">BotReloginEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号正尝试重新登录</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotReloginEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号正尝试重新登录

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;BotReloginEvent&#34;
    qq: int

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotReloginEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotReloginEvent.qq"><code class="name">var <span class="ident">qq</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotReloginEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.BotUnmuteEvent"><code class="flex name class">
<span>class <span class="ident">BotUnmuteEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主解除禁言</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Member (annotation, optional = None): 执行解除禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
Group (annotation, optional = None): 发生该事件的群组</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class BotUnmuteEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主解除禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行解除禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;BotUnmuteEvent&#34;
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.BotUnmuteEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.BotUnmuteEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.BotUnmuteEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.FriendRecallEvent"><code class="flex name class">
<span>class <span class="ident">FriendRecallEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 有一位与应用实例所辖账号为好友关系的用户撤回了一条消息</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class FriendRecallEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有一位与应用实例所辖账号为好友关系的用户撤回了一条消息

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type = &#34;FriendRecallEvent&#34;
    authorId: int
    messageId: int
    time: int
    operator: int

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.FriendRecallEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.FriendRecallEvent.authorId"><code class="name">var <span class="ident">authorId</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.FriendRecallEvent.messageId"><code class="name">var <span class="ident">messageId</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.FriendRecallEvent.operator"><code class="name">var <span class="ident">operator</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.FriendRecallEvent.time"><code class="name">var <span class="ident">time</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.FriendRecallEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.GroupAllowAnonymousChatEvent"><code class="flex name class">
<span>class <span class="ident">GroupAllowAnonymousChatEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组修改了有关匿名聊天的相关设定</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 修改了相关设定的群组
Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class GroupAllowAnonymousChatEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组修改了有关匿名聊天的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupAllowAnonymousChatEvent&#34;
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.GroupAllowAnonymousChatEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowAnonymousChatEvent.current"><code class="name">var <span class="ident">current</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowAnonymousChatEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowAnonymousChatEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowAnonymousChatEvent.origin"><code class="name">var <span class="ident">origin</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowAnonymousChatEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.GroupAllowConfessTalkEvent"><code class="flex name class">
<span>class <span class="ident">GroupAllowConfessTalkEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组修改了有关坦白说的相关设定</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 修改了相关设定的群组</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class GroupAllowConfessTalkEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组修改了有关坦白说的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
    &#34;&#34;&#34;

    type = &#34;GroupAllowAnonymousChatEvent&#34;
    origin: bool
    current: bool
    group: Group
    isByBot: bool

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.GroupAllowConfessTalkEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowConfessTalkEvent.current"><code class="name">var <span class="ident">current</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowConfessTalkEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowConfessTalkEvent.isByBot"><code class="name">var <span class="ident">isByBot</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowConfessTalkEvent.origin"><code class="name">var <span class="ident">origin</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowConfessTalkEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.GroupAllowMemberInviteEvent"><code class="flex name class">
<span>class <span class="ident">GroupAllowMemberInviteEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组修改了有关是否允许已有成员邀请其他用户加入群组的相关设定</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 修改了相关设定的群组
Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class GroupAllowMemberInviteEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组修改了有关是否允许已有成员邀请其他用户加入群组的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupAllowMemberInviteEvent&#34;
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.GroupAllowMemberInviteEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowMemberInviteEvent.current"><code class="name">var <span class="ident">current</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowMemberInviteEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowMemberInviteEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowMemberInviteEvent.origin"><code class="name">var <span class="ident">origin</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupAllowMemberInviteEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent"><code class="flex name class">
<span>class <span class="ident">GroupEntranceAnnouncementChangeEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组被修改了入群公告</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 被修改了入群公告的群组
Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class GroupEntranceAnnouncementChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组被修改了入群公告

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了入群公告的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupEntranceAnnouncementChangeEvent&#34;
    origin: str
    current: str
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.current"><code class="name">var <span class="ident">current</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.origin"><code class="name">var <span class="ident">origin</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.GroupMuteAllEvent"><code class="flex name class">
<span>class <span class="ident">GroupMuteAllEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组开启了全体禁言</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 开启了全体禁言的群组
Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class GroupMuteAllEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组开启了全体禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 开启了全体禁言的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    &#34;&#34;&#34;

    type = &#34;GroupMuteAllEvent&#34;
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.GroupMuteAllEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.GroupMuteAllEvent.current"><code class="name">var <span class="ident">current</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupMuteAllEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupMuteAllEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupMuteAllEvent.origin"><code class="name">var <span class="ident">origin</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupMuteAllEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.GroupNameChangeEvent"><code class="flex name class">
<span>class <span class="ident">GroupNameChangeEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组被修改了群名称</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 被修改了群名称的群组
Member (annotation): 更改群名称的成员, 权限必定为管理员或是群主</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class GroupNameChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组被修改了群名称

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了群名称的群组
        Member (annotation): 更改群名称的成员, 权限必定为管理员或是群主
    &#34;&#34;&#34;

    type = &#34;GroupNameChangeEvent&#34;
    origin: str
    current: str
    group: Group
    operator: Optional[Member] = None

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.GroupNameChangeEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.GroupNameChangeEvent.current"><code class="name">var <span class="ident">current</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupNameChangeEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupNameChangeEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupNameChangeEvent.origin"><code class="name">var <span class="ident">origin</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupNameChangeEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.GroupRecallEvent"><code class="flex name class">
<span>class <span class="ident">GroupRecallEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 有群成员在指定群组撤回了一条消息, 注意, 这里的群成员若具有管理员/群主权限, 则他们可以撤回其他普通群员的消息, 且不受发出时间限制.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Member (annotation, return:optional): 执行本操作的群成员, 若为 None 则为应用实例所辖账号操作
Group (annotation): 发生该事件的群组</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class GroupRecallEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有群成员在指定群组撤回了一条消息, 注意, 这里的群成员若具有管理员/群主权限, 则他们可以撤回其他普通群员的消息, 且不受发出时间限制.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, return:optional): 执行本操作的群成员, 若为 None 则为应用实例所辖账号操作
        Group (annotation): 发生该事件的群组
    &#34;&#34;&#34;

    type = &#34;GroupRecallEvent&#34;
    authorId: int
    messageId: int
    time: datetime
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.GroupRecallEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.GroupRecallEvent.authorId"><code class="name">var <span class="ident">authorId</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupRecallEvent.group"><code class="name">var <span class="ident">group</span> : <a title="graia.application.group.Group" href="../group.html#graia.application.group.Group">Group</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupRecallEvent.messageId"><code class="name">var <span class="ident">messageId</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupRecallEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupRecallEvent.time"><code class="name">var <span class="ident">time</span> : datetime.datetime</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.GroupRecallEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberCardChangeEvent"><code class="flex name class">
<span>class <span class="ident">MemberCardChangeEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组成员的群名片被更改, 执行者可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, <code>operator</code> 为 <code>None</code>).</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 发生该事件的群组
Member (annotation):
- <code>"target"</code> (default, const, str): 被更改群名片的成员
- <code>"operator"</code> (default, const, str, return:optional): 该操作的执行者, 可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, <code>operator</code> 为 <code>None</code>).</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberCardChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员的群名片被更改, 执行者可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被更改群名片的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 该操作的执行者, 可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).
    &#34;&#34;&#34;

    type = &#34;MemberCardChangeEvent&#34;
    origin: str
    current: str
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberCardChangeEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberCardChangeEvent.current"><code class="name">var <span class="ident">current</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberCardChangeEvent.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberCardChangeEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberCardChangeEvent.origin"><code class="name">var <span class="ident">origin</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberCardChangeEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberJoinEvent"><code class="flex name class">
<span>class <span class="ident">MemberJoinEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一新成员加入了一特定群组</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 该用户加入的群组
Member (annotation): 关于该用户的成员实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberJoinEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一新成员加入了一特定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 该用户加入的群组
        Member (annotation): 关于该用户的成员实例
    &#34;&#34;&#34;

    type = &#34;MemberJoinEvent&#34;
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberJoinEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinEvent.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent"><code class="flex name class">
<span>class <span class="ident">MemberJoinRequestEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 有一用户向机器人作为管理员/群主的群组申请加入群组.</p>
<p><strong> 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Addon Introduction:
该事件的处理需要你获取原始事件实例.
1. 读取该事件的基础信息:
<code>python
event.supplicant: int # 申请加入群组的用户的 ID
event.groupId: Optional[int] # 对方试图加入的群组的 ID
event.groupName: str # 对方试图加入的群组的名称
event.nickname: str # 对方的昵称
event.message: str # 对方发起请求时填写的描述</code></p>
<pre><code>2. 同意请求: &lt;code&gt;await event.accept()&lt;/code&gt;, 具体查看该方法所附带的说明.
3. 拒绝请求: &lt;code&gt;await event.reject()&lt;/code&gt;, 具体查看该方法所附带的说明.
4. 忽略请求: &lt;code&gt;await event.ignore()&lt;/code&gt;, 具体查看该方法所附带的说明.
5. 拒绝并不再接受来自对方的请求: &lt;code&gt;await event.rejectAndBlock()&lt;/code&gt;, 具体查看该方法所附带的说明.
6. 忽略并不再接受来自对方的请求: &lt;code&gt;await event.ignoreAndBlock()&lt;/code&gt;, 具体查看该方法所附带的说明.
</code></pre>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberJoinRequestEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有一用户向机器人作为管理员/群主的群组申请加入群组.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 申请加入群组的用户的 ID
        event.groupId: Optional[int] # 对方试图加入的群组的 ID
        event.groupName: str # 对方试图加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 忽略请求: `await event.ignore()`, 具体查看该方法所附带的说明.
        5. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
        6. 忽略并不再接受来自对方的请求: `await event.ignoreAndBlock()`, 具体查看该方法所附带的说明.
    &#34;&#34;&#34;

    type = &#34;MemberJoinRequestEvent&#34;
    requestId: int = Field(..., alias=&#34;eventId&#34;)
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias=&#34;groupId&#34;)
    groupName: str = Field(..., alias=&#34;groupName&#34;)
    nickname: str = Field(..., alias=&#34;nick&#34;)
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;同意对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 0,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 1,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignore(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;忽略对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 2,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 3,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignoreAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.groupId,
                &#34;operate&#34;: 4,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.groupId"><code class="name">var <span class="ident">groupId</span> : Union[int, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.groupName"><code class="name">var <span class="ident">groupName</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.message"><code class="name">var <span class="ident">message</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.nickname"><code class="name">var <span class="ident">nickname</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.requestId"><code class="name">var <span class="ident">requestId</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.supplicant"><code class="name">var <span class="ident">supplicant</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
<h3>Methods</h3>
<dl>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.accept"><code class="name flex">
<span>async def <span class="ident">accept</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>同意对方加入群组.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;同意对方加入群组.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.groupId,
            &#34;operate&#34;: 0,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.ignore"><code class="name flex">
<span>async def <span class="ident">ignore</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>忽略对方加入群组的请求.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def ignore(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;忽略对方加入群组的请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.groupId,
            &#34;operate&#34;: 2,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.ignoreAndBlock"><code class="name flex">
<span>async def <span class="ident">ignoreAndBlock</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def ignoreAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.groupId,
            &#34;operate&#34;: 4,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.reject"><code class="name flex">
<span>async def <span class="ident">reject</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>拒绝对方加入群组.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;拒绝对方加入群组.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.groupId,
            &#34;operate&#34;: 1,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.MemberJoinRequestEvent.rejectAndBlock"><code class="name flex">
<span>async def <span class="ident">rejectAndBlock</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def rejectAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/memberJoinRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.groupId,
            &#34;operate&#34;: 3,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberLeaveEventKick"><code class="flex name class">
<span>class <span class="ident">MemberLeaveEventKick</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组成员被管理员/群主从群组中删除, 当 <code>operator</code> 为 <code>None</code> 时, 执行者为应用实例所辖账号.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 指定的群组
Member (annotation):
- <code>"target"</code> (default, const, str): 被从群组删除的成员
- <code>"operator"</code> (default, const, str, return:optional): 执行了该操作的管理员/群主, 也可能是应用实例所辖账号.</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberLeaveEventKick(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员被管理员/群主从群组中删除, 当 `operator` 为 `None` 时, 执行者为应用实例所辖账号.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 指定的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被从群组删除的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 执行了该操作的管理员/群主, 也可能是应用实例所辖账号.
    &#34;&#34;&#34;

    type = &#34;MemberLeaveEventKick&#34;
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberLeaveEventKick.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberLeaveEventKick.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberLeaveEventKick.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberLeaveEventKick.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberLeaveEventQuit"><code class="flex name class">
<span>class <span class="ident">MemberLeaveEventQuit</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组成员主动退出群组.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 发生本事件的群组, 通常的, 在本事件发生后本群组成员数量少于之前
Member (annotation): 主动退出群组的成员</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberLeaveEventQuit(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员主动退出群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生本事件的群组, 通常的, 在本事件发生后本群组成员数量少于之前
        Member (annotation): 主动退出群组的成员
    &#34;&#34;&#34;

    type = &#34;MemberLeaveEventQuit&#34;
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberLeaveEventQuit.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberLeaveEventQuit.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberLeaveEventQuit.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberMuteEvent"><code class="flex name class">
<span>class <span class="ident">MemberMuteEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组成员被管理员/群组禁言, 当 <code>operator</code> 为 <code>None</code> 时为应用实例所辖账号操作.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 发生该事件的群组
Member (annotation):
- <code>"target"</code> (default, const, str): 被禁言的成员
- <code>"operator"</code> (default, const, str, return:optional): 该操作的执行者, 也可能是应用实例所辖账号.</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberMuteEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员被管理员/群组禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被禁言的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 该操作的执行者, 也可能是应用实例所辖账号.
    &#34;&#34;&#34;

    type = &#34;MemberMuteEvent&#34;
    durationSeconds: int
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberMuteEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberMuteEvent.durationSeconds"><code class="name">var <span class="ident">durationSeconds</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberMuteEvent.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberMuteEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberMuteEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberPermissionChangeEvent"><code class="flex name class">
<span>class <span class="ident">MemberPermissionChangeEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组成员的权限被更改/调整, 执行者只可能是群组的群主.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 发生该事件的群组
Member (annotation): 被调整权限的群组成员</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberPermissionChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员的权限被更改/调整, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被调整权限的群组成员
    &#34;&#34;&#34;

    type = &#34;MemberPermissionChangeEvent&#34;
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberPermissionChangeEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberPermissionChangeEvent.current"><code class="name">var <span class="ident">current</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberPermissionChangeEvent.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberPermissionChangeEvent.origin"><code class="name">var <span class="ident">origin</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberPermissionChangeEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberSpecialTitleChangeEvent"><code class="flex name class">
<span>class <span class="ident">MemberSpecialTitleChangeEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组成员的群头衔被更改, 执行者只可能是群组的群主.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 发生该事件的群组
Member (annotation): 被更改群头衔的群组成员</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberSpecialTitleChangeEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员的群头衔被更改, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被更改群头衔的群组成员
    &#34;&#34;&#34;

    type = &#34;MemberSpecialTitleChangeEvent&#34;
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberSpecialTitleChangeEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberSpecialTitleChangeEvent.current"><code class="name">var <span class="ident">current</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberSpecialTitleChangeEvent.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberSpecialTitleChangeEvent.origin"><code class="name">var <span class="ident">origin</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberSpecialTitleChangeEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.MemberUnmuteEvent"><code class="flex name class">
<span>class <span class="ident">MemberUnmuteEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>该事件发生时, 有一群组成员被管理员/群组解除禁言, 当 <code>operator</code> 为 <code>None</code> 时为应用实例所辖账号操作.</p>
<p><strong> 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例
Group (annotation): 发生该事件的群组
Member (annotation):
- <code>"target"</code> (default, const, str): 被禁言的成员
- <code>"operator"</code> (default, const, str, return:optional): 该操作的执行者, 可能是管理员或是群主, 也可能是应用实例所辖账号.</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MemberUnmuteEvent(MiraiEvent):
    &#34;&#34;&#34;该事件发生时, 有一群组成员被管理员/群组解除禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `&#34;target&#34;` (default, const, str): 被禁言的成员
          - `&#34;operator&#34;` (default, const, str, return:optional): 该操作的执行者, 可能是管理员或是群主, 也可能是应用实例所辖账号.
    &#34;&#34;&#34;

    type = &#34;MemberUnmuteEvent&#34;
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == &#34;target&#34;:
                    return interface.event.member
                elif interface.default == &#34;operator&#34;:
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.MemberUnmuteEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.MemberUnmuteEvent.member"><code class="name">var <span class="ident">member</span> : <a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberUnmuteEvent.operator"><code class="name">var <span class="ident">operator</span> : Union[<a title="graia.application.group.Member" href="../group.html#graia.application.group.Member">Member</a>, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.MemberUnmuteEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent"><code class="flex name class">
<span>class <span class="ident">NewFriendRequestEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 有一用户向机器人提起好友请求.</p>
<p><strong> 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Addon Introduction:
该事件的处理需要你获取原始事件实例.
1. 读取该事件的基础信息:
<code>python
event.supplicant: int # 发起加好友请求的用户的 ID
event.sourceGroup: Optional[int] # 对方可能是从某个群发起对账号的请求的, mirai 可以解析对方从哪个群发起的请求.
event.nickname: str # 对方的昵称
event.message: str # 对方发起请求时填写的描述</code></p>
<pre><code>2. 同意请求: &lt;code&gt;await event.accept()&lt;/code&gt;, 具体查看该方法所附带的说明.
3. 拒绝请求: &lt;code&gt;await event.reject()&lt;/code&gt;, 具体查看该方法所附带的说明.
4. 拒绝并不再接受来自对方的请求: &lt;code&gt;await event.rejectAndBlock()&lt;/code&gt;, 具体查看该方法所附带的说明.
</code></pre>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class NewFriendRequestEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 有一用户向机器人提起好友请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 发起加好友请求的用户的 ID
        event.sourceGroup: Optional[int] # 对方可能是从某个群发起对账号的请求的, mirai 可以解析对方从哪个群发起的请求.
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
    &#34;&#34;&#34;

    type = &#34;NewFriendRequestEvent&#34;
    requestId: int = Field(..., alias=&#34;eventId&#34;)
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    sourceGroup: Optional[int] = Field(..., alias=&#34;groupId&#34;)
    nickname: str = Field(..., alias=&#34;nick&#34;)
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;同意对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.sourceGroup,
                &#34;operate&#34;: 0,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.sourceGroup,
                &#34;operate&#34;: 1,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
        &#34;&#34;&#34;拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        &#34;&#34;&#34;
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession(&#34;you must authenticate before this.&#34;)
        async with app.session.post(
            app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
            json={
                &#34;sessionKey&#34;: app.connect_info.sessionKey,
                &#34;eventId&#34;: self.requestId,
                &#34;fromId&#34;: self.supplicant,
                &#34;groupId&#34;: self.sourceGroup,
                &#34;operate&#34;: 2,
                &#34;message&#34;: message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.message"><code class="name">var <span class="ident">message</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.nickname"><code class="name">var <span class="ident">nickname</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.requestId"><code class="name">var <span class="ident">requestId</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.sourceGroup"><code class="name">var <span class="ident">sourceGroup</span> : Union[int, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.supplicant"><code class="name">var <span class="ident">supplicant</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
<h3>Methods</h3>
<dl>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.accept"><code class="name flex">
<span>async def <span class="ident">accept</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>同意对方的加好友请求.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def accept(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;同意对方的加好友请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.sourceGroup,
            &#34;operate&#34;: 0,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.reject"><code class="name flex">
<span>async def <span class="ident">reject</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>拒绝对方的加好友请求.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def reject(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;拒绝对方的加好友请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.sourceGroup,
            &#34;operate&#34;: 1,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.NewFriendRequestEvent.rejectAndBlock"><code class="name flex">
<span>async def <span class="ident">rejectAndBlock</span></span>(<span>self, message: str = '') ‑> NoReturn</span>
</code></dt>
<dd>
<div class="desc"><p>拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>message</code></strong> :&ensp;<code>str</code>, optional</dt>
<dd>附带给对方的消息. 默认为 "".</dd>
</dl>
<h2 id="raises">Raises</h2>
<dl>
<dt><code>LookupError</code></dt>
<dd>尝试上下文外处理事件.</dd>
<dt><code>InvaildSession</code></dt>
<dd>应用实例没准备好!</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>NoReturn</code></dt>
<dd>没有返回.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">async def rejectAndBlock(self, message: str = &#34;&#34;) -&gt; NoReturn:
    &#34;&#34;&#34;拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 &#34;&#34;.

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    &#34;&#34;&#34;
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession(&#34;you must authenticate before this.&#34;)
    async with app.session.post(
        app.url_gen(&#34;resp/newFriendRequestEvent&#34;),
        json={
            &#34;sessionKey&#34;: app.connect_info.sessionKey,
            &#34;eventId&#34;: self.requestId,
            &#34;fromId&#34;: self.supplicant,
            &#34;groupId&#34;: self.sourceGroup,
            &#34;operate&#34;: 2,
            &#34;message&#34;: message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)</code></pre>
</details>
</dd>
</dl>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent"><code class="flex name class">
<span>class <span class="ident">NudgeEvent</span></span>
<span>(</span><span>**data: Any)</span>
</code></dt>
<dd>
<div class="desc"><p>当该事件发生时, 应用实例所辖账号被某个账号在相应上下文区域进行 "戳一戳"(Nudge) 的行为.</p>
<p>Graia Project 及 NatriumLab 都不是医学机构, 不负责关于性骚扰等方面的咨询, 请前往权威医学有关设施进行相应操作.</p>
<p><strong> 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. </strong></p>
<p>Allowed Extra Parameters(提供的额外注解支持):
GraiaMiraiApplication (annotation): 发布事件的应用实例</p>
<p>Create a new model by parsing and validating input data from keyword arguments.</p>
<p>Raises ValidationError if the input data cannot be parsed to form a valid model.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class NudgeEvent(MiraiEvent):
    &#34;&#34;&#34;当该事件发生时, 应用实例所辖账号被某个账号在相应上下文区域进行 &#34;戳一戳&#34;(Nudge) 的行为.

    Graia Project 及 NatriumLab 都不是医学机构, 不负责关于性骚扰等方面的咨询, 请前往权威医学有关设施进行相应操作.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    &#34;&#34;&#34;

    type: str = &#34;NudgeEvent&#34;
    supplicant: int = Field(..., alias=&#34;fromId&#34;)  # 即请求方 QQ
    target: int

    msg_action: str = Field(..., alias=&#34;action&#34;)
    msg_suffix: str = Field(..., alias=&#34;suffix&#34;)
    origin_subject_info: Dict[str, Any] = Field(..., alias=&#34;subject&#34;)

    friend_id: Optional[int] = None
    group_id: Optional[int] = None

    context_type: Literal[&#34;friend&#34;, &#34;group&#34;] = None

    @validator(&#34;friend_id&#34;, pre=True, always=True)
    def subject_handle_friend_id(cls, v, values, **kwargs):
        if values[&#34;origin_subject_info&#34;][&#34;kind&#34;] == &#34;Friend&#34;:
            return values[&#34;origin_subject_info&#34;][&#34;id&#34;]

    @validator(&#34;group_id&#34;, pre=True, always=True)
    def subject_handle_group_id(cls, v, values):
        if values[&#34;origin_subject_info&#34;][&#34;kind&#34;] == &#34;Group&#34;:
            return values[&#34;origin_subject_info&#34;][&#34;id&#34;]

    @validator(&#34;context_type&#34;, pre=True, always=True)
    def subject_handle_context_type(cls, v, values):
        return str.lower(values[&#34;origin_subject_info&#34;][&#34;kind&#34;])

    Dispatcher = EmptyDispatcher</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="graia.application.event.MiraiEvent" href="index.html#graia.application.event.MiraiEvent">MiraiEvent</a></li>
<li><a title="graia.broadcast.entities.event.BaseEvent" href="../../broadcast/entities/event.html#graia.broadcast.entities.event.BaseEvent">BaseEvent</a></li>
<li>pydantic.main.BaseModel</li>
<li>pydantic.utils.Representation</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="graia.application.event.mirai.NudgeEvent.Dispatcher"><code class="name">var <span class="ident">Dispatcher</span></code></dt>
<dd>
<div class="desc"><p>所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.</p></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.context_type"><code class="name">var <span class="ident">context_type</span> : Literal['friend', 'group']</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.friend_id"><code class="name">var <span class="ident">friend_id</span> : Union[int, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.group_id"><code class="name">var <span class="ident">group_id</span> : Union[int, NoneType]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.msg_action"><code class="name">var <span class="ident">msg_action</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.msg_suffix"><code class="name">var <span class="ident">msg_suffix</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.origin_subject_info"><code class="name">var <span class="ident">origin_subject_info</span> : Dict[str, Any]</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.supplicant"><code class="name">var <span class="ident">supplicant</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.target"><code class="name">var <span class="ident">target</span> : int</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.type"><code class="name">var <span class="ident">type</span> : str</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
<h3>Static methods</h3>
<dl>
<dt id="graia.application.event.mirai.NudgeEvent.subject_handle_context_type"><code class="name flex">
<span>def <span class="ident">subject_handle_context_type</span></span>(<span>v, values)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">@validator(&#34;context_type&#34;, pre=True, always=True)
def subject_handle_context_type(cls, v, values):
    return str.lower(values[&#34;origin_subject_info&#34;][&#34;kind&#34;])</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.subject_handle_friend_id"><code class="name flex">
<span>def <span class="ident">subject_handle_friend_id</span></span>(<span>v, values, **kwargs)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">@validator(&#34;friend_id&#34;, pre=True, always=True)
def subject_handle_friend_id(cls, v, values, **kwargs):
    if values[&#34;origin_subject_info&#34;][&#34;kind&#34;] == &#34;Friend&#34;:
        return values[&#34;origin_subject_info&#34;][&#34;id&#34;]</code></pre>
</details>
</dd>
<dt id="graia.application.event.mirai.NudgeEvent.subject_handle_group_id"><code class="name flex">
<span>def <span class="ident">subject_handle_group_id</span></span>(<span>v, values)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">@validator(&#34;group_id&#34;, pre=True, always=True)
def subject_handle_group_id(cls, v, values):
    if values[&#34;origin_subject_info&#34;][&#34;kind&#34;] == &#34;Group&#34;:
        return values[&#34;origin_subject_info&#34;][&#34;id&#34;]</code></pre>
</details>
</dd>
</dl>
</dd>
</dl>
</section>
</article>
<nav id="sidebar">
<h1>Index</h1>
<div class="toc">
<ul></ul>
</div>
<ul id="index">
<li><h3>Super-module</h3>
<ul>
<li><code><a title="graia.application.event" href="index.html">graia.application.event</a></code></li>
</ul>
</li>
<li><h3><a href="#header-classes">Classes</a></h3>
<ul>
<li>
<h4><code><a title="graia.application.event.mirai.BotGroupPermissionChangeEvent" href="#graia.application.event.mirai.BotGroupPermissionChangeEvent">BotGroupPermissionChangeEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotGroupPermissionChangeEvent.Dispatcher" href="#graia.application.event.mirai.BotGroupPermissionChangeEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotGroupPermissionChangeEvent.current" href="#graia.application.event.mirai.BotGroupPermissionChangeEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.BotGroupPermissionChangeEvent.group" href="#graia.application.event.mirai.BotGroupPermissionChangeEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.BotGroupPermissionChangeEvent.origin" href="#graia.application.event.mirai.BotGroupPermissionChangeEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.BotGroupPermissionChangeEvent.type" href="#graia.application.event.mirai.BotGroupPermissionChangeEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent">BotInvitedJoinGroupRequestEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.Dispatcher" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.accept" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.accept">accept</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.groupId" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.groupId">groupId</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.groupName" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.groupName">groupName</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.message" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.message">message</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.nickname" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.nickname">nickname</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.reject" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.reject">reject</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.requestId" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.requestId">requestId</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.supplicant" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.supplicant">supplicant</a></code></li>
<li><code><a title="graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.type" href="#graia.application.event.mirai.BotInvitedJoinGroupRequestEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotJoinGroupEvent" href="#graia.application.event.mirai.BotJoinGroupEvent">BotJoinGroupEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotJoinGroupEvent.Dispatcher" href="#graia.application.event.mirai.BotJoinGroupEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotJoinGroupEvent.group" href="#graia.application.event.mirai.BotJoinGroupEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.BotJoinGroupEvent.type" href="#graia.application.event.mirai.BotJoinGroupEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotLeaveEventActive" href="#graia.application.event.mirai.BotLeaveEventActive">BotLeaveEventActive</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotLeaveEventActive.Dispatcher" href="#graia.application.event.mirai.BotLeaveEventActive.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotLeaveEventActive.group" href="#graia.application.event.mirai.BotLeaveEventActive.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.BotLeaveEventActive.type" href="#graia.application.event.mirai.BotLeaveEventActive.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotLeaveEventKick" href="#graia.application.event.mirai.BotLeaveEventKick">BotLeaveEventKick</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotLeaveEventKick.Dispatcher" href="#graia.application.event.mirai.BotLeaveEventKick.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotLeaveEventKick.group" href="#graia.application.event.mirai.BotLeaveEventKick.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.BotLeaveEventKick.type" href="#graia.application.event.mirai.BotLeaveEventKick.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotMuteEvent" href="#graia.application.event.mirai.BotMuteEvent">BotMuteEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotMuteEvent.Dispatcher" href="#graia.application.event.mirai.BotMuteEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotMuteEvent.durationSeconds" href="#graia.application.event.mirai.BotMuteEvent.durationSeconds">durationSeconds</a></code></li>
<li><code><a title="graia.application.event.mirai.BotMuteEvent.operator" href="#graia.application.event.mirai.BotMuteEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.BotMuteEvent.type" href="#graia.application.event.mirai.BotMuteEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotOfflineEventActive" href="#graia.application.event.mirai.BotOfflineEventActive">BotOfflineEventActive</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotOfflineEventActive.Dispatcher" href="#graia.application.event.mirai.BotOfflineEventActive.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOfflineEventActive.qq" href="#graia.application.event.mirai.BotOfflineEventActive.qq">qq</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOfflineEventActive.type" href="#graia.application.event.mirai.BotOfflineEventActive.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotOfflineEventDropped" href="#graia.application.event.mirai.BotOfflineEventDropped">BotOfflineEventDropped</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotOfflineEventDropped.Dispatcher" href="#graia.application.event.mirai.BotOfflineEventDropped.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOfflineEventDropped.qq" href="#graia.application.event.mirai.BotOfflineEventDropped.qq">qq</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOfflineEventDropped.type" href="#graia.application.event.mirai.BotOfflineEventDropped.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotOfflineEventForce" href="#graia.application.event.mirai.BotOfflineEventForce">BotOfflineEventForce</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotOfflineEventForce.Dispatcher" href="#graia.application.event.mirai.BotOfflineEventForce.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOfflineEventForce.qq" href="#graia.application.event.mirai.BotOfflineEventForce.qq">qq</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOfflineEventForce.type" href="#graia.application.event.mirai.BotOfflineEventForce.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotOnlineEvent" href="#graia.application.event.mirai.BotOnlineEvent">BotOnlineEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotOnlineEvent.Dispatcher" href="#graia.application.event.mirai.BotOnlineEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOnlineEvent.qq" href="#graia.application.event.mirai.BotOnlineEvent.qq">qq</a></code></li>
<li><code><a title="graia.application.event.mirai.BotOnlineEvent.type" href="#graia.application.event.mirai.BotOnlineEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotReloginEvent" href="#graia.application.event.mirai.BotReloginEvent">BotReloginEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotReloginEvent.Dispatcher" href="#graia.application.event.mirai.BotReloginEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotReloginEvent.qq" href="#graia.application.event.mirai.BotReloginEvent.qq">qq</a></code></li>
<li><code><a title="graia.application.event.mirai.BotReloginEvent.type" href="#graia.application.event.mirai.BotReloginEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.BotUnmuteEvent" href="#graia.application.event.mirai.BotUnmuteEvent">BotUnmuteEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.BotUnmuteEvent.Dispatcher" href="#graia.application.event.mirai.BotUnmuteEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.BotUnmuteEvent.operator" href="#graia.application.event.mirai.BotUnmuteEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.BotUnmuteEvent.type" href="#graia.application.event.mirai.BotUnmuteEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.FriendRecallEvent" href="#graia.application.event.mirai.FriendRecallEvent">FriendRecallEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.FriendRecallEvent.Dispatcher" href="#graia.application.event.mirai.FriendRecallEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.FriendRecallEvent.authorId" href="#graia.application.event.mirai.FriendRecallEvent.authorId">authorId</a></code></li>
<li><code><a title="graia.application.event.mirai.FriendRecallEvent.messageId" href="#graia.application.event.mirai.FriendRecallEvent.messageId">messageId</a></code></li>
<li><code><a title="graia.application.event.mirai.FriendRecallEvent.operator" href="#graia.application.event.mirai.FriendRecallEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.FriendRecallEvent.time" href="#graia.application.event.mirai.FriendRecallEvent.time">time</a></code></li>
<li><code><a title="graia.application.event.mirai.FriendRecallEvent.type" href="#graia.application.event.mirai.FriendRecallEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.GroupAllowAnonymousChatEvent" href="#graia.application.event.mirai.GroupAllowAnonymousChatEvent">GroupAllowAnonymousChatEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.GroupAllowAnonymousChatEvent.Dispatcher" href="#graia.application.event.mirai.GroupAllowAnonymousChatEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowAnonymousChatEvent.current" href="#graia.application.event.mirai.GroupAllowAnonymousChatEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowAnonymousChatEvent.group" href="#graia.application.event.mirai.GroupAllowAnonymousChatEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowAnonymousChatEvent.operator" href="#graia.application.event.mirai.GroupAllowAnonymousChatEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowAnonymousChatEvent.origin" href="#graia.application.event.mirai.GroupAllowAnonymousChatEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowAnonymousChatEvent.type" href="#graia.application.event.mirai.GroupAllowAnonymousChatEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.GroupAllowConfessTalkEvent" href="#graia.application.event.mirai.GroupAllowConfessTalkEvent">GroupAllowConfessTalkEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.GroupAllowConfessTalkEvent.Dispatcher" href="#graia.application.event.mirai.GroupAllowConfessTalkEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowConfessTalkEvent.current" href="#graia.application.event.mirai.GroupAllowConfessTalkEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowConfessTalkEvent.group" href="#graia.application.event.mirai.GroupAllowConfessTalkEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowConfessTalkEvent.isByBot" href="#graia.application.event.mirai.GroupAllowConfessTalkEvent.isByBot">isByBot</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowConfessTalkEvent.origin" href="#graia.application.event.mirai.GroupAllowConfessTalkEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowConfessTalkEvent.type" href="#graia.application.event.mirai.GroupAllowConfessTalkEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.GroupAllowMemberInviteEvent" href="#graia.application.event.mirai.GroupAllowMemberInviteEvent">GroupAllowMemberInviteEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.GroupAllowMemberInviteEvent.Dispatcher" href="#graia.application.event.mirai.GroupAllowMemberInviteEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowMemberInviteEvent.current" href="#graia.application.event.mirai.GroupAllowMemberInviteEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowMemberInviteEvent.group" href="#graia.application.event.mirai.GroupAllowMemberInviteEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowMemberInviteEvent.operator" href="#graia.application.event.mirai.GroupAllowMemberInviteEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowMemberInviteEvent.origin" href="#graia.application.event.mirai.GroupAllowMemberInviteEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupAllowMemberInviteEvent.type" href="#graia.application.event.mirai.GroupAllowMemberInviteEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent" href="#graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent">GroupEntranceAnnouncementChangeEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.Dispatcher" href="#graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.current" href="#graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.group" href="#graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.operator" href="#graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.origin" href="#graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.type" href="#graia.application.event.mirai.GroupEntranceAnnouncementChangeEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.GroupMuteAllEvent" href="#graia.application.event.mirai.GroupMuteAllEvent">GroupMuteAllEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.GroupMuteAllEvent.Dispatcher" href="#graia.application.event.mirai.GroupMuteAllEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupMuteAllEvent.current" href="#graia.application.event.mirai.GroupMuteAllEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupMuteAllEvent.group" href="#graia.application.event.mirai.GroupMuteAllEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupMuteAllEvent.operator" href="#graia.application.event.mirai.GroupMuteAllEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupMuteAllEvent.origin" href="#graia.application.event.mirai.GroupMuteAllEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupMuteAllEvent.type" href="#graia.application.event.mirai.GroupMuteAllEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.GroupNameChangeEvent" href="#graia.application.event.mirai.GroupNameChangeEvent">GroupNameChangeEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.GroupNameChangeEvent.Dispatcher" href="#graia.application.event.mirai.GroupNameChangeEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupNameChangeEvent.current" href="#graia.application.event.mirai.GroupNameChangeEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupNameChangeEvent.group" href="#graia.application.event.mirai.GroupNameChangeEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupNameChangeEvent.operator" href="#graia.application.event.mirai.GroupNameChangeEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupNameChangeEvent.origin" href="#graia.application.event.mirai.GroupNameChangeEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupNameChangeEvent.type" href="#graia.application.event.mirai.GroupNameChangeEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.GroupRecallEvent" href="#graia.application.event.mirai.GroupRecallEvent">GroupRecallEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.GroupRecallEvent.Dispatcher" href="#graia.application.event.mirai.GroupRecallEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupRecallEvent.authorId" href="#graia.application.event.mirai.GroupRecallEvent.authorId">authorId</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupRecallEvent.group" href="#graia.application.event.mirai.GroupRecallEvent.group">group</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupRecallEvent.messageId" href="#graia.application.event.mirai.GroupRecallEvent.messageId">messageId</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupRecallEvent.operator" href="#graia.application.event.mirai.GroupRecallEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupRecallEvent.time" href="#graia.application.event.mirai.GroupRecallEvent.time">time</a></code></li>
<li><code><a title="graia.application.event.mirai.GroupRecallEvent.type" href="#graia.application.event.mirai.GroupRecallEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberCardChangeEvent" href="#graia.application.event.mirai.MemberCardChangeEvent">MemberCardChangeEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.MemberCardChangeEvent.Dispatcher" href="#graia.application.event.mirai.MemberCardChangeEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberCardChangeEvent.current" href="#graia.application.event.mirai.MemberCardChangeEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberCardChangeEvent.member" href="#graia.application.event.mirai.MemberCardChangeEvent.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberCardChangeEvent.operator" href="#graia.application.event.mirai.MemberCardChangeEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberCardChangeEvent.origin" href="#graia.application.event.mirai.MemberCardChangeEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberCardChangeEvent.type" href="#graia.application.event.mirai.MemberCardChangeEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberJoinEvent" href="#graia.application.event.mirai.MemberJoinEvent">MemberJoinEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.MemberJoinEvent.Dispatcher" href="#graia.application.event.mirai.MemberJoinEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinEvent.member" href="#graia.application.event.mirai.MemberJoinEvent.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinEvent.type" href="#graia.application.event.mirai.MemberJoinEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberJoinRequestEvent" href="#graia.application.event.mirai.MemberJoinRequestEvent">MemberJoinRequestEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.Dispatcher" href="#graia.application.event.mirai.MemberJoinRequestEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.accept" href="#graia.application.event.mirai.MemberJoinRequestEvent.accept">accept</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.groupId" href="#graia.application.event.mirai.MemberJoinRequestEvent.groupId">groupId</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.groupName" href="#graia.application.event.mirai.MemberJoinRequestEvent.groupName">groupName</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.ignore" href="#graia.application.event.mirai.MemberJoinRequestEvent.ignore">ignore</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.ignoreAndBlock" href="#graia.application.event.mirai.MemberJoinRequestEvent.ignoreAndBlock">ignoreAndBlock</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.message" href="#graia.application.event.mirai.MemberJoinRequestEvent.message">message</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.nickname" href="#graia.application.event.mirai.MemberJoinRequestEvent.nickname">nickname</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.reject" href="#graia.application.event.mirai.MemberJoinRequestEvent.reject">reject</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.rejectAndBlock" href="#graia.application.event.mirai.MemberJoinRequestEvent.rejectAndBlock">rejectAndBlock</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.requestId" href="#graia.application.event.mirai.MemberJoinRequestEvent.requestId">requestId</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.supplicant" href="#graia.application.event.mirai.MemberJoinRequestEvent.supplicant">supplicant</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberJoinRequestEvent.type" href="#graia.application.event.mirai.MemberJoinRequestEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberLeaveEventKick" href="#graia.application.event.mirai.MemberLeaveEventKick">MemberLeaveEventKick</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.MemberLeaveEventKick.Dispatcher" href="#graia.application.event.mirai.MemberLeaveEventKick.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberLeaveEventKick.member" href="#graia.application.event.mirai.MemberLeaveEventKick.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberLeaveEventKick.operator" href="#graia.application.event.mirai.MemberLeaveEventKick.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberLeaveEventKick.type" href="#graia.application.event.mirai.MemberLeaveEventKick.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberLeaveEventQuit" href="#graia.application.event.mirai.MemberLeaveEventQuit">MemberLeaveEventQuit</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.MemberLeaveEventQuit.Dispatcher" href="#graia.application.event.mirai.MemberLeaveEventQuit.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberLeaveEventQuit.member" href="#graia.application.event.mirai.MemberLeaveEventQuit.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberLeaveEventQuit.type" href="#graia.application.event.mirai.MemberLeaveEventQuit.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberMuteEvent" href="#graia.application.event.mirai.MemberMuteEvent">MemberMuteEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.MemberMuteEvent.Dispatcher" href="#graia.application.event.mirai.MemberMuteEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberMuteEvent.durationSeconds" href="#graia.application.event.mirai.MemberMuteEvent.durationSeconds">durationSeconds</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberMuteEvent.member" href="#graia.application.event.mirai.MemberMuteEvent.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberMuteEvent.operator" href="#graia.application.event.mirai.MemberMuteEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberMuteEvent.type" href="#graia.application.event.mirai.MemberMuteEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberPermissionChangeEvent" href="#graia.application.event.mirai.MemberPermissionChangeEvent">MemberPermissionChangeEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.MemberPermissionChangeEvent.Dispatcher" href="#graia.application.event.mirai.MemberPermissionChangeEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberPermissionChangeEvent.current" href="#graia.application.event.mirai.MemberPermissionChangeEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberPermissionChangeEvent.member" href="#graia.application.event.mirai.MemberPermissionChangeEvent.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberPermissionChangeEvent.origin" href="#graia.application.event.mirai.MemberPermissionChangeEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberPermissionChangeEvent.type" href="#graia.application.event.mirai.MemberPermissionChangeEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberSpecialTitleChangeEvent" href="#graia.application.event.mirai.MemberSpecialTitleChangeEvent">MemberSpecialTitleChangeEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.MemberSpecialTitleChangeEvent.Dispatcher" href="#graia.application.event.mirai.MemberSpecialTitleChangeEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberSpecialTitleChangeEvent.current" href="#graia.application.event.mirai.MemberSpecialTitleChangeEvent.current">current</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberSpecialTitleChangeEvent.member" href="#graia.application.event.mirai.MemberSpecialTitleChangeEvent.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberSpecialTitleChangeEvent.origin" href="#graia.application.event.mirai.MemberSpecialTitleChangeEvent.origin">origin</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberSpecialTitleChangeEvent.type" href="#graia.application.event.mirai.MemberSpecialTitleChangeEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.MemberUnmuteEvent" href="#graia.application.event.mirai.MemberUnmuteEvent">MemberUnmuteEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.MemberUnmuteEvent.Dispatcher" href="#graia.application.event.mirai.MemberUnmuteEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberUnmuteEvent.member" href="#graia.application.event.mirai.MemberUnmuteEvent.member">member</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberUnmuteEvent.operator" href="#graia.application.event.mirai.MemberUnmuteEvent.operator">operator</a></code></li>
<li><code><a title="graia.application.event.mirai.MemberUnmuteEvent.type" href="#graia.application.event.mirai.MemberUnmuteEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.NewFriendRequestEvent" href="#graia.application.event.mirai.NewFriendRequestEvent">NewFriendRequestEvent</a></code></h4>
<ul class="two-column">
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.Dispatcher" href="#graia.application.event.mirai.NewFriendRequestEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.accept" href="#graia.application.event.mirai.NewFriendRequestEvent.accept">accept</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.message" href="#graia.application.event.mirai.NewFriendRequestEvent.message">message</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.nickname" href="#graia.application.event.mirai.NewFriendRequestEvent.nickname">nickname</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.reject" href="#graia.application.event.mirai.NewFriendRequestEvent.reject">reject</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.rejectAndBlock" href="#graia.application.event.mirai.NewFriendRequestEvent.rejectAndBlock">rejectAndBlock</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.requestId" href="#graia.application.event.mirai.NewFriendRequestEvent.requestId">requestId</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.sourceGroup" href="#graia.application.event.mirai.NewFriendRequestEvent.sourceGroup">sourceGroup</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.supplicant" href="#graia.application.event.mirai.NewFriendRequestEvent.supplicant">supplicant</a></code></li>
<li><code><a title="graia.application.event.mirai.NewFriendRequestEvent.type" href="#graia.application.event.mirai.NewFriendRequestEvent.type">type</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="graia.application.event.mirai.NudgeEvent" href="#graia.application.event.mirai.NudgeEvent">NudgeEvent</a></code></h4>
<ul class="">
<li><code><a title="graia.application.event.mirai.NudgeEvent.Dispatcher" href="#graia.application.event.mirai.NudgeEvent.Dispatcher">Dispatcher</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.context_type" href="#graia.application.event.mirai.NudgeEvent.context_type">context_type</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.friend_id" href="#graia.application.event.mirai.NudgeEvent.friend_id">friend_id</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.group_id" href="#graia.application.event.mirai.NudgeEvent.group_id">group_id</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.msg_action" href="#graia.application.event.mirai.NudgeEvent.msg_action">msg_action</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.msg_suffix" href="#graia.application.event.mirai.NudgeEvent.msg_suffix">msg_suffix</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.origin_subject_info" href="#graia.application.event.mirai.NudgeEvent.origin_subject_info">origin_subject_info</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.subject_handle_context_type" href="#graia.application.event.mirai.NudgeEvent.subject_handle_context_type">subject_handle_context_type</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.subject_handle_friend_id" href="#graia.application.event.mirai.NudgeEvent.subject_handle_friend_id">subject_handle_friend_id</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.subject_handle_group_id" href="#graia.application.event.mirai.NudgeEvent.subject_handle_group_id">subject_handle_group_id</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.supplicant" href="#graia.application.event.mirai.NudgeEvent.supplicant">supplicant</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.target" href="#graia.application.event.mirai.NudgeEvent.target">target</a></code></li>
<li><code><a title="graia.application.event.mirai.NudgeEvent.type" href="#graia.application.event.mirai.NudgeEvent.type">type</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.9.2</a>.</p>
</footer>
</body>
</html>